import fitz
import os
from django.conf import settings


class pdf_to_img_class:
    def __init__(self):
        pass

    def pdf_to_img_v1(self, pdf_path):
        # 检查文件是否存在
        if not os.path.exists(pdf_path):
            return False, '没有找到这个文件'

        # 提取PDF文件名（不包含扩展名）作为pdf_id
        pdf_id = os.path.splitext(os.path.basename(pdf_path))[0]

        # 创建输出目录
        base_dir = str(settings.BASE_DIR)  # 项目根目录
        img_path_dir = 'your_upload_to_path' + pdf_id  # 数据库保存的目录，这里需要替换为实际的upload_to路径
        output_dir = base_dir + settings.MEDIA_URL + img_path_dir  # 绝对路径，保存图片使用
        if not os.path.exists(output_dir):
            os.makedirs(output_dir)

        # 打开PDF文件
        pdf_document = fitz.open(pdf_path)

        # 遍历每一页并转换为图片
        for page_number in range(pdf_document.page_count):
            # 获取页面
            page = pdf_document[page_number]
            # 将页面转换为图片
            pix = page.get_pixmap(matrix=fitz.Matrix(300 / 72, 300 / 72))  # 300 DPI
            # 保存图片
            image_path = f"{output_dir}/page_{page_number + 1}.png"
            pix.save(image_path)

        pdf_document.close()
        return True, 'PDF转换图片成功'
